 package dao.Betrieb;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dao.DaoOberklasse;

import valueobjects.Betrieb.Betrieb;
import valueobjects.Betrieb.BetriebImpl;

/**
 * 
 * @author Raphael Berger
 * 
 *         Beschreibung: In dieser Klasse stehen die SQL-Befehle, die die
 *         Datenbank bzw. die Tabellen NICHT ändern, sondern nur zur Verfügung
 *         stellen (keine SQL-Update Befehle)
 * 
 */

public class BetriebDAOImpl extends DaoOberklasse<Betrieb> implements
		BetriebDAO {
	@Override
	public List<Betrieb> holeAlleBetriebe() {
		return this.executeSQLSelect("SELECT * FROM betrieb;");
	}

	@Override
	public List<Betrieb> executeSQLSelect(String sql) {
		ResultSet rs = this.connectionDAO.sqlSelectAusfuehren(sql);

		List<Betrieb> betriebliste = new ArrayList<Betrieb>();
		try {
			while (rs.next()) {
				// Mapping von Resultset zu Objekten.
				Betrieb betrieb = new BetriebImpl();

				betrieb.setId(rs.getInt("betrieb_id"));
				betrieb.setBezeichnung(rs.getString("bezeichnung"));
				betrieb.setStrasse(rs.getString("strasse"));
				betrieb.setHausnummer(rs.getInt("hausnummer"));
				betrieb.setPlz(rs.getInt("plz"));
				betrieb.setOrt(rs.getString("ort"));
				betrieb.setVorwahl(rs.getString("vorwahl"));
				betrieb.setTelefon(rs.getString("telefon"));

				betriebliste.add(betrieb);

			}
		} catch (SQLException e) {
			// Bei Fehlern.
			e.printStackTrace();
		}
		return betriebliste;
	}

	@Override
	public void speichereBetrieb(Betrieb betrieb) {

		String sql = "INSERT INTO betrieb (bezeichnung, strasse, hausnummer, plz, ort, vorwahl, telefon) "
				+ "VALUES ('"
				+ betrieb.getBezeichnung()
				+ "', '"
				+ betrieb.getStrasse()
				+ "', "
				+ betrieb.getHausnummer()
				+ ", '"
				+ betrieb.getPlz()
				+ "', '"
				+ betrieb.getOrt()
				+ "', '"
				+ betrieb.getVorwahl() + "', '" + betrieb.getTelefon() + "');";

		this.executeSQL(sql);

	}

	@Override
	public void loescheBetriebe(int id) {
		String sql = "DELETE FROM betrieb WHERE betrieb_id = " + id + ";";
		this.executeSQL(sql);

	}

	@Override
	public void aendereBetrieb(Betrieb betrieb) {
		String sql = "UPDATE betrieb SET bezeichnung = '"
				+ betrieb.getBezeichnung() + "', strasse = '"
				+ betrieb.getStrasse() + "', hausnummer = "
				+ betrieb.getHausnummer() + ", plz = '" + betrieb.getPlz()
				+ "', ort = '" + betrieb.getOrt() + "', vorwahl = '"
				+ betrieb.getVorwahl() + "', telefon = '"
				+ betrieb.getTelefon() + "';";

		System.out.println(sql);
		this.executeSQL(sql);

	}
}